home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
TECHFUN.ZIP
/
TECHFUN.CPP
< prev
next >
Wrap
C/C++ Source or Header
|
1995-05-23
|
2KB
|
98 lines
// Black Magic TechnoFun effect by Kaos (a.k.a. Bruno Carlos)
// If you use this code in any of your
// productions give us the proper credits...
#include <dos.h>
#include <math.h>
#include <stdio.h>
#include <process.h>
#include <alloc.h>
#include <mem.h>
#include "xmode.h"
char *Ptr(char far *ptr, unsigned int l)
{
unsigned int seg, off;
seg=FP_SEG(ptr);
off=FP_OFF(ptr);
seg+=(off/16);
off&=0x000f;
off+=(unsigned int)(l & 0x000fL);
seg+=(l/16L);
ptr=(char *)MK_FP(seg, off);
return(ptr);
}
void technofun(void)
{
FILE *temp;
unsigned char *buffer1;
int i,a,b;
unsigned Locs1[500];
unsigned Locs2[300];
unsigned char pal[768];
#define Pi 3.1415927
for (i=0; i<500; i+=2)
{
Locs1[i]=(int)(40*sin((2*Pi/250)*i))+40;
Locs1[i+1]=(int)(10*sin((2*Pi/500)*i))+10;
}
for (i=0; i<300; i+=2)
{
Locs2[i]=(int)(40*sin((2*Pi/300)*i))+40;
Locs2[i+1]=(int)(10*sin((2*Pi/150)*i))+10;
}
if ((temp=fopen("circles.xcr","rb"))==NULL) exit(101);
if ((buffer1=(unsigned char *)farmalloc(89920))==NULL) exit(101);
fread(buffer1,64000,1,temp);
fread((unsigned char *)MK_FP(FP_SEG(buffer1)+4000,4),1,25920,temp);
fclose(temp);
xinitvideo(0);
xclrvram();
pal[0]=0;
pal[1]=0;
pal[2]=0;
pal[3]=0x20;
pal[4]=0x20;
pal[5]=0x20;
pal[6]=0x30;
pal[7]=0x30;
pal[8]=0x30;
xsetpalette(pal);
for (i=0,a=0,b=0; i<800; i+=1,a+=4,b+=4)
{
if (a==500) a=0;
if (b==300) b=0;
xsetvpage(1);
xvwait();
// xsetborder(1);
movewin(Ptr(buffer1+Locs1[a]*320/4+Locs1[a+1],0),Ptr(buffer1+Locs2[b]*320/4+Locs2[b+1],0),0);
// xsetborder(0);
xsetvpage(0);
xvwait();
// xsetborder(1);
movewin(Ptr(buffer1+Locs1[a+2]*320/4+Locs1[a+3],0),Ptr(buffer1+Locs2[b+2]*320/4+Locs2[b+3],0),1);
// xsetborder(0);
}
farfree(buffer1);
}
void main()
{
technofun();
xtextmode(25);
}